/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package control;

import dao.UsuarioDAO;
import entidad.Usuario;
import java.util.ArrayList;
import org.junit.Test;
import static org.junit.Assert.*;

/**
 *
 * @author Osmond
 */
public class inicializacion {
    
    private String LONG_NOMBRE_INCORRECTA = "Longitud de nombre incorrecta";
    private String LONG_PASSWORD_INCORRECTA = "Longitud contrasena incorrecta";
    private String USUARIO_NO_VALIDO = "Usuario incorrecto";
    private String USUARIO_AUTORIZADO = "Bienvenido";
    
    private String LONG_CEDULA_INCORRECTA = "Longitud de cédula incorrecta";
    private String LONG_NOMBRE_DE_USUARIO_INCORRECTA = "Longitud de nombre de usuario incorrecta";
    private String LONG_CARGO_INCORRECTA = "Cargo incorrecto";
    private String USUARIO_EXISTENTE = "Usuario existente, ingrese otros datos";
    private String TODO_VALIDO = "Usuario agregado exitosamente!";
    private static ControlUsuario controlUsuarios = new ControlUsuario();
    
    public inicializacion() {
    }
    // TODO add test methods here.
    // The methods must be annotated with annotation @Test. For example:
    //
    // @Test
    // public void hello() {}
    @Test
    public void initData(){
        UsuarioDAO dao = new UsuarioDAO();
//        Sistema sistema = new Sistema();
        ArrayList<Usuario> usuarios = new ArrayList<>();
        
        Usuario nuevo = new Usuario("Administrador",1223629065l, "Usuario", "Contraseña","Administrador");
        nuevo.getPermisos().setConsultarProductos(true);
        nuevo.getPermisos().setConsultarProveedores(true);
        nuevo.getPermisos().setConsultarUsuarios(true);
        nuevo.getPermisos().setAgregarProveedores(true);
        nuevo.getPermisos().setAgregarUsuarios(true);
        nuevo.getPermisos().setAgregarProductos(true);
        nuevo.getPermisos().setEditarProveedores(true);
        nuevo.getPermisos().setEditarUsuarios(true);
        nuevo.getPermisos().setEditarProductos(true);
        nuevo.getPermisos().setEliminarProveedores(true);
        nuevo.getPermisos().setEliminarUsuarios(true);
        nuevo.getPermisos().setEliminarProductos(true);
        nuevo.getPermisos().setGenerarReportes(true);
        nuevo.getPermisos().setRealizarTransferencias(true);
        
        Usuario nuevo2 = new Usuario("Optimus",1223629064l, "osmond", "pomare","consultante");
        nuevo2.getPermisos().setConsultarProductos(true);
        nuevo2.getPermisos().setConsultarProveedores(true);
        nuevo2.getPermisos().setConsultarUsuarios(true);
        nuevo2.getPermisos().setAgregarProveedores(true);
        nuevo2.getPermisos().setAgregarUsuarios(true);
        nuevo2.getPermisos().setAgregarProductos(false);
        nuevo2.getPermisos().setGenerarReportes(true);
        nuevo2.getPermisos().setRealizarTransferencias(false);
        usuarios.add(nuevo2);
        usuarios.add(nuevo);

//        sistema.setUsuarios(usuarios);
//        controlUsuarios.setSistema(sistema);----------------
        for (Usuario u : usuarios) {
            System.out.println(u.getNombredeUsuario());
            System.out.println(u.getContraseña());
            System.out.println("------------");
            dao.crear(u);
        }
        
        
//        ProveedorDAO dao2 = new ProveedorDAO();
//        Proveedor nuevo3 = new Proveedor("Colanta", 1111111111l, "Gonzalo", 9999999, 11111111111l, "Carrera 29 Z");
//        dao2.crear(nuevo3);
//        
//        System.out.println("asdadsads");
//        
//        LoteDAO dao3 = new LoteDAO();
//        Lote nuevo4 = new Lote(2500,DateTime.parse("12/12/2013", DateTimeFormat.forPattern("dd/MM/yyyy")),50);
//        dao3.crear(nuevo4);
    }
    
    @Test
    public void testLongitudNombre(){
        Usuario u= new Usuario();
        u.setNombredeUsuario("R");
        u.setContraseña("123456");
        assertEquals(controlUsuarios.validarLogin(u.getNombredeUsuario(),u.getContraseña()),LONG_NOMBRE_INCORRECTA);
    }
   
    @Test
    public void testLongitudPassword(){
        Usuario u= new Usuario();
        u.setNombredeUsuario("Ricardo");
        u.setContraseña("1");
        assertEquals(controlUsuarios.validarLogin(u.getNombredeUsuario(),u.getContraseña()),LONG_PASSWORD_INCORRECTA);
    }
    
    @Test
    public void testDatos(){
        Usuario u= new Usuario();
        u.setNombredeUsuario("Ricardo");
        u.setContraseña("A56789");
        assertEquals(controlUsuarios.validarLogin(u.getNombredeUsuario(),u.getContraseña()),USUARIO_NO_VALIDO);
    }
    
    @Test
    public void testTodoCorrecto(){
        Usuario u= new Usuario();
        u.setNombredeUsuario("Usuario");
        u.setContraseña("Contraseña");
        assertEquals(controlUsuarios.validarLogin(u.getNombredeUsuario(),u.getContraseña()),USUARIO_AUTORIZADO);
    }
    
    //agregar usuario
    
//    @Test
//    public void testLongitudNombre(){
//        Usuario u= new Usuario();
//        u.setNombre("R");
//        assertEquals(controlUsuarios.agregar(u),LONG_NOMBRE_INCORRECTA);
//    }
    
    @Test
    public void testLongitudCedula(){
        Usuario u= new Usuario();
        u.setNombre("Ricardo");
        u.setCedula(1010);
        assertEquals(controlUsuarios.agregar(u),LONG_CEDULA_INCORRECTA);
    }
       
    @Test
    public void testLongitudNombreDeUsuario(){
        Usuario u= new Usuario();
        u.setNombre("Ricardo");
        u.setCedula(1010205622);
        u.setNombredeUsuario("R");
        assertEquals(controlUsuarios.agregar(u),LONG_NOMBRE_DE_USUARIO_INCORRECTA);
    }
       
//    @Test
//    public void testLongitudPassword(){
//        Usuario u= new Usuario();
//        u.setNombre("Ricardo");
//        u.setCedula(1010205622);
//        u.setNombredeUsuario("Ricardo1");
//        u.setContraseña("1");
//        assertEquals(controlUsuarios.agregar(u),LONG_PASSWORD_INCORRECTA);
//    }
  
    @Test
    public void testLongitudCargo(){
        Usuario u= new Usuario();
        u.setNombre("Ricardo");
        u.setCedula(1010205622);
        u.setNombredeUsuario("Ricardo1");
        u.setContraseña("123456");
        u.setCargo("a");
        assertEquals(controlUsuarios.agregar(u),LONG_CARGO_INCORRECTA);
    }  
    
    @Test
    public void testDatosAgregación(){
        Usuario u= new Usuario();
        u.setNombre("Ricardo");
        u.setCedula(1223629065l);
        u.setNombredeUsuario("Usuario");
        u.setContraseña("123456");
        u.setCargo("administrador");
        assertEquals(controlUsuarios.agregar(u),USUARIO_EXISTENTE);
    }
    
    @Test
    public void testTodoCorrectoAgregación(){
        Usuario u= new Usuario();
        u.setNombre("Ricardo");
        u.setCedula(1010205622);
        u.setNombredeUsuario("Ricardo1");
        u.setContraseña("123456");
        u.setCargo("Administrador");
        u.setPermisos();
        assertEquals(controlUsuarios.agregar(u),TODO_VALIDO);
        controlUsuarios.eliminar(u);
    }
    
}